package com.flex.reflection.invoke;

import com.flex.reflection.handler.Handler;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.util.List;

/**
 * 调用方法
 */
public interface Invoke {
    /**
     * 调用方法
     * @param target
     * @param args
     * @return
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     */
    Object invoke(Object target, Object... args) throws IllegalAccessException, InvocationTargetException;

    /**
     * 调用参数类型
     * @return
     */
    List<Type> parameterType();

    /**
     * 返回参数类型
     * @return
     */
    Type returnType();


}
